#pragma once

#include <iostream>

namespace Cinetic
{
	class Assert
	{
	public:
		// logs the formatted message
		Assert(const SourceInfo& sourceInfo, const char* format, ...);
	};

#ifdef _DEBUG
    #define ME_ASSERT(condition, format, ...)    (condition) ? ME_UNUSED(true) : (Assert(ME_SOURCE_INFO, "Assertion \"" #condition "\" failed. " format, __VA_ARGS__), ME_BREAKPOINT)
#else
    #define ME_ASSERT(condition, format, ...)    ME_UNUSED(true)
#endif
}